package SingletonHengry;

/**

 * 懒汉式（懒狗）单例模式
 * 懒汉式：在需要的时候才创建，类加载时不创建对象
 * 在多线程操作时会出现线程安全问题，但是可以使用线程同步的三种方式进行解决，（1，同步代码块；2，同步方法；3，同步锁）。
 */
public class SingletonLazyNoSafety {
    public static SingletonLazyNoSafety s;
    //1. 构造方法私有化
    public SingletonLazyNoSafety(){}

    //3. 内部提供一个公共静态的方法供外界进行访问
    public static SingletonLazyNoSafety getInstance() {
        if(s == null) {
            //如果s为null，就创建一个对象
            s = new SingletonLazyNoSafety();  //2、该单例对象必须由单例类自行创建
        }
        return s;
    }

    public static void main(String[] args) {
        SingletonLazyNoSafety i1 = SingletonLazyNoSafety.getInstance();
        SingletonLazyNoSafety i2 = SingletonLazyNoSafety.getInstance();
        System.out.println("获取的对象是否相同："+(i1==i2));
    }
}
